// js 高性能队列 通过维护一个指针来控制队列 的出队操作，避免使用 shift 造成整个数组重排 这样无论是 出队列还是 入队列，时间复杂度都是 O(1)

export class Quene<T = any> {
    constructor(list:T[] = []){
        this.quene = [...list];
    }
    quene:T[]
    head = 0
    // 出队列
    shift(){return this.quene[this.head++];}
    // 入队列
    push(data:T){this.quene.push(data)}
    //
    isEmpty(){
        return this.head == this.quene.length;
    }
    clar(){
        this.quene.length = 0;
        this.head = 0;
    }
}